//控制输入文本框操作
inputControl = {
	//初始化
	init: function(param){
		var $this = this;
		var $param = {
			els: [],			//1.需要捆绑的文本框，每个元素写法如： '.test','#test'
			isNum: false,		//2.是否需要数字校验，默认为false
			tranInt: false,		//3.是否需要转化为整形，默认为false，必须数字校验为true才生效
			inputLength:0,		//4.输入长度限制，默认是0，代表不限制长度
			min: null,			//5.最小值，默认为null，需要使用时直接输入数字即可，必须小于最大值且必须数字校验为true才生效
			max: null,			//6.最小值，默认为null，需要使用时直接输入数字即可，必须大于最小值且必须数字校验为true才生效
			defValue: null,		//7.默认恢复值，若部分校验失败时会恢复到该值，若为null则不恢复
			fixed: 0,			//8.保留多少位小数，必须数字校验为true且转化为整形为false才生效
			inputEvent: 'blur',	//9.触发条件，默认是blur
			eventTime: 1000,	//10.触发间隔时间，触发条件为'keyup'时生效，以毫秒作单位，默认是1000
			callback: null,		//11.用于回调，只有类型为function时才生效
			container: '',		//12.父容器，建议填写，可应对后加载元素的绑定，写法如： '.test','#test'
			isChange: true,		//13.校验以后是否调整文本框的值，默认为true
			
			st: null,			//计时器使用，外部不用传这参数
		};
		$param = $.extend({}, $param, param);
		if($param.els.length == 0)
			return false;
		//遍历绑定
		$param.els.map(function(item,i){
			//判断是否存在父容器
			if($param.container == ''){
				//通常情况下	
				$(item).on($param.inputEvent, function(){
				    $this.deal($(this), $param, event);
				})
			}else{
				//带有父容器情况下
				$($param.container).on($param.inputEvent, item, function(){
				    $this.deal($(this), $param, event);
				})
			}
		})		
	},
	deal: function (el, p, event) {
		var $this = this;
		//清除延时
		if(p.st){
			clearTimeout(p.st);
			p.st = null;
		}
		//判断是否为keyup事件
		if(p.inputEvent == 'keyup'){
			p.st = setTimeout(function(){
			    $this.method(el, p, event);
			}, p.eventTime);
			return false;
		}
		$this.method(el, p, event);
	},
	method: function (el, p, event) {
		var value = el.val();
		//判断是否限制长度
		if(p.inputLength != 0)
			value = value.substring(0, p.inputLength);
		
		//是否数字校验
		if(p.isNum){				
			//是否转化为整形
			if(p.tranInt){
				value = parseInt(value);
				//恢复到默认值
				if(isNaN(value) && p.defValue != null){
					value = p.defValue;
				}else{
					//最大最小值
					if(p.min != null && p.max != null){
						//若最大值小于最小值，则取消最大值
						if(p.max < p.min)
							p.max = null;
					}
					if(p.min != null)
						value = value < p.min ? p.min : value;
					if(p.max != null)
						value = value > p.max ? p.max : value;
				}
					
			}else{
				value = parseFloat(value);
				//恢复到默认值
				if(isNaN(value) && p.defValue != null){
					value = p.defValue;
				}else{
					//是否需要保留小数
					if(value != 0 && p.fixed > 0)
						value = value.toFixed(p.fixed);
					//最大最小值
					if(p.min != null && p.max != null){
						//若最大值小于最小值，则取消最大值
						if(p.max < p.min)
							p.max = null;
					}
					if(p.min != null)
						value = value < p.min ? p.min : value;
					if(p.max != null)
						value = value > p.max ? p.max : value;
				}
			}
		}
	
		if(p.isChange){
			el.val('');
			el.val(value);		
		}
		
		//是否回调
		if(typeof(p.callback) == 'function')
		    p.callback(value, el, event);
	}
}